#define  _CRT_SECURE_NO_WARNINGS 1

//#include<bits/stdc++.h>
//#define sd(n) scanf("%d",&n) 
//#define sld(n) scanf("%lld",&n)
//#define pd(n) printf("%d", (n))
//#define pld(n) printf("%lld", n)
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//const int N = 2e5;
//const int maxn = 1e6;
//typedef long long int ll;
//using namespace std;
////----------------------------------------------------------------------------//
//
//void solve()
//{
//
//}
//
//int main()
//{
//	int T;
//	sd(T);
//	while (T--)
//	{
//		solve();
//	}
//	return 0;
//}

//#include<bits/stdc++.h>
//using namespace std;
//#define all(x) (x).begin(),(x).end()
//#define rall(x) (x).rbegin(),(x).rend()
//const int N = 2e5 + 10;
//#define INF 0x3f3f3f3f;
//typedef long long int ll;
//#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
////----------------------------------------------------------------------------//
//
//void solve()
//{
//	string s1, s2;
//	cin >> s1 >> s2;
//
//	if (s1[0] == s2[0])
//	{
//		cout << "YES" << '\n';
//		cout << s1[0] << '*' << '\n';
//		return;
//	}
//
//	if (s1[s1.size() - 1] == s2[s2.size() - 1])
//	{
//		cout << "YES" << '\n';
//		cout << "*" << s1[s1.size() - 1] << '\n';
//		return;
//	}
//
//	for (int i = 0; i < s1.size() - 2; i++)
//	{
//		string t;
//		t.push_back(s1[i]);
//		t.push_back(s1[i + 1]);
//
//		if (s2.find(t) != s2.npos)
//		{
//			cout << "*" << t << "*" << '\n';
//			return;
//		}
//	}
//	cout << -1 << '\n';
//
//
//
//
//}
//
//int main()
//{
//	close();
//	int T; cin >> T;
//	while (T--) solve();
//	return 0;
//}


#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 1e5 + 10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n, m;

//int a[N], ans[N];
int ans[N];
bool v[N];

void solve()
{
    // memset(ans, -1, sizeof ans);
    // cin >> n >> m;

    // for(int i = 1; i <= m; i++) cin >> a[i];

    // map<int, int> mp;

    // int cnt = n, pos = 0;
    // for(int i = 1; i <= m; i++)
    // {
    //     if(!mp[a[i]])
    //     {
    //         ans[cnt] = ++pos;
    //         cnt--;
    //         mp[a[i]]++;

    //     }
    //     else pos++;
    // }

    // for(int i=1;i<=cnt;i++)
    // {
    //  if(!ans[i]) ans[i]=-1;
    // }


    // for(int i=1;i<=n;i++)
    // {
    //  cout<<ans[i]<<" ";
    // }
    // cout<<'\n';

    cin >> n >> m;
    for (int i = 1; i <= n; i++) ans[i] = -1;
    for (int i = n + 1; i <= n + m; i++) v[i] = 0;
    int pos = n + 1;
    for (int i = 1; i <= m; i++)
    {
        int x;
        cin >> x;
        if (pos >= 1 && !v[x]) ans[--pos] = i;
        v[x] = 1;
    }
    for (int i = 1; i <= n; i++)
        cout << ans[i] << " \n"[i == n];



}

int main()
{
    close();
    int T;
    cin >> T;
    while (T--) solve();
    return 0;
}
//1-n